//OCTOBER, 1979
//BCPL-GENOA, WRITTEN BY RAY CARHART, MODIFIED BY NABG.
//	MODS JAN 80, ASSOCIATE BELIEF/DISBELIEF SCORES WITH CASES.

$LIBRARY "BCPLIB.REL[1,202]"
GET "BCPLIB.GET[1,35]"
GET "MYLIB.GET[1,164]"
STATIC $( VECSPACE = VEC 7500 $);
MANIFEST $( R2WDSZ = 32; P2WDSZ = 5 $)
GET "SETFNS.BCL[1,35]"
GET "LINSTR.BCL[1,35]"
GET "LSTFNS.BCL[1,35]"
GET "SEGFNS.BCL[1,35]"
STATIC $( CTELIST = NIL; ANYBONDS = NIL; FIRSTFREE = 1; STRUCNAME = NIL;
          STRUCTYPE = NIL; IBLIST = NIL $);
GET "BASES0.BCL[1,164]"
GET "BASES.BCL[1,164]"
GET "ESRW.BCL[1,35]"
STATIC $( CTABLE = NIL; CTSTART = NIL; CTSTOP = NIL; NUMISBS = NIL;
          ATTYPE = NIL $);
STATIC $( STACK = VEC 500; STACKPTR = 0 $);

LET GENOA() BE
 $( STATIC $( XSTRNUM = NIL; HSTRNUM = NIL $);
 GET "PASESO.BCP[1,164]"
 GET "GLIFNS.BCP[1,164]"
 GET "LIBFNS.BCL[1,164]"
 GET "GLIFSD.BCP[1,164]"
 GET "XMSI.BCP[1,164]"
 GET "XMSDF.BCP[1,164]"
 GET "PRESUP.BCP[1,164]"
 INITLISTS(NEWVEC(1000),1000);
 MAKESCAT(NEWVEC(200),200,NEWVEC(400),400);
 XSTRNUM:=NUMOFSTR("X");
 HSTRNUM:=NUMOFSTR("H");
 TEST FILEEXISTS(TOPFILENAME(),CGEXT) THEN RECINIT() OR GLIINIT();
 GLIREFRESH();
 WHILE DELETEFILE(SC1FILENAME(),CGEXT) DO;
 WHILE DELETEFILE(SC2FILENAME(),CGEXT) DO;
 LP:

 SWITCHON PROMPTSELECT("#",0,[TABLE 2,
                       "CONSTRAINT ALTERNATIVE GENERATE DRAW DEFINE FIX SHOW",
                       "FORGET SEARCH SAVE RESTORE PRESUPPOSE EXIT"],
                       "GENOA-HELP",
                       [TABLE 15, "ALTERNATIVE",1, "CONSTRAINT",3,
			          "GENERATE",2,    "DRAW",4,
	                          "DEFINE",5,      "FIX",6,
				  "SHOW",7,        "FORGET",8, 
				  "SEARCH",9,      "SAVE",10,
				  "RESTORE",11,    "EXIT",12,
				  "MSINTERPRET",13,"MSDATADEF",14,
				  "PRESUPPOSE", 15,
		                   0],
			TRUE) INTO
  $(
  CASE 1: ALTERNATE(); ENDCASE;
  CASE 2: CONSTRAINT(TRUE); ENDCASE;
  CASE 3: CONSTRAINT(FALSE); ENDCASE;
  CASE 4: CGDRAW(-TERMTYPE,FALSE); ENDCASE;
  CASE 5: CGDEFINE(FALSE); ENDCASE;
  CASE 6: CGDEFINE(TRUE); ENDCASE;
  CASE 7: CGSHOW(); ENDCASE;
  CASE 8: FORGET(); ENDCASE;
  CASE 9: SEARCH(); ENDCASE;
  CASE 10: SAVE(); ENDCASE;
  CASE 11: RESTORE(); ENDCASE;
  CASE 12: EXIT(FALSE); ENDCASE;
  CASE 13: MSI(); ENDCASE;
  CASE 14: MSDF(); ENDCASE;
  CASE 15: PRESUPPOSE(); ENDCASE;
  $);
 GOTO LP
 $);

LET START() BE
 $(
// ![#124]:=TOPORSTOP;
 INITIALISEIO(VECSPACE,7500);
 OUTPUT:=TTY;
 INPUT:=TTY;
 GENOA()
 $)
